﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NHTU;

namespace NOMFinalSettlement.AppForm.Program
{
    public partial class fCapitalInvestment : DevComponents.DotNetBar.Office2007Form
    {
        private FinalSettlementModel.TableNguonVon capitalDB = null;
        private int idSelected = -1;

        public fCapitalInvestment()
        {
            InitializeComponent();
            MainApp.Self.appProcess.clientPermission();
        }

        private void fCapitalInvestment_Load(object sender, EventArgs e)
        {
            // Khởi tạo lớp model của TblQuyetDinhDauTu
            capitalDB = new FinalSettlementModel.TableNguonVon();

            // Đăng ký sự kiện
            capitalDB.EventLoadData += new FinalSettlementModel.TableNguonVon.LoadData(OnLoadCapitalData);

            DataToGrid();
        }

        void OnLoadCapitalData()
        {
            ISynchronizeInvoke i = (ISynchronizeInvoke)this;
            if (i.InvokeRequired)
            {
                FinalSettlementModel.TableNguonVon.LoadData tmpDelegate = new FinalSettlementModel.TableNguonVon.LoadData(OnLoadCapitalData);
                i.BeginInvoke(tmpDelegate, null);
                return;
            }
            //Hàm xử lý
            DataToGrid();
        }

        #region "Sự kiện"
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (idSelected > 0)
            {
                doDelete();
                reloadControl();
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (txtName.Text == "" || inputPrice.Text == "")
            {
                MsgBox.Show("Vui lòng nhập đầy đủ các thông tin nguồn vốn, giá trị.", "Thông báo", NHTU.MsgBoxButton.Ok, NHTU.MsgBoxIcon.Stop);
                return;
            }

            if (idSelected < 1)
            {
                doSave();
            }
            else
            {
                doUpdate();
            }
            reloadControl();
        }

        // sự kiện khi click chuột vào grid
        private void listData_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            idSelected = MainApp.Self.appProcess.getIdGrid(listData, e, null);

            //Lấy dữ liệu từ grid ra text box
            DataGridViewSelectedRowCollection selectRows = listData.SelectedRows;
            foreach (DataGridViewRow row in selectRows)
            {
                if (row.Cells[0].Value != null)
                {
                    txtName.Text = row.Cells[1].Value.ToString();
                    inputPrice.Text = row.Cells[2].Value.ToString();
                    btnDelete.Enabled = true;
                }
            }
        }

        #endregion

        #region "Hàm xử lý dữ liệu"

        void doDelete()
        {
            if (MsgBox.Show("Bạn có chắc chắn muốn xoá dữ liệu này không ?", "Thông Báo",
                 MsgBoxButton.YesNo, MsgBoxIcon.Question) == MsgBoxResult.Yes)
            {
                capitalDB.deleteCapital(idSelected);
            }
        }
        void doSave()
        {
            if (capitalDB.checkCapitalName(-1, txtName.Text))
            {
                capitalDB.insertCapital(txtName.Text, (decimal)inputPrice.Value);
            }
            else
            {
                MsgBox.Show("Dữ liệu này đã tồn tại. Vui lòng kiểm tra lại!", "Thông Báo", MsgBoxButton.YesNo, MsgBoxIcon.Question);
            }
        }
        void doUpdate()
        {
            if (capitalDB.checkCapitalName(idSelected,txtName.Text))
            {
                capitalDB.updateCapital(idSelected, txtName.Text, (decimal)inputPrice.Value);
            }
            else
            {
                MsgBox.Show("Dữ liệu này đã tồn tại. Vui lòng kiểm tra lại!", "Thông Báo", MsgBoxButton.YesNo, MsgBoxIcon.Question);
            }
        }

        void DataToGrid()
        {
            listData.Rows.Clear();
            DataTable dt = capitalDB.ListCapitalData();

            foreach (DataRow row in dt.Rows)
            {
                listData.Rows.Add(row["ID"], row["NguonVon"], row["GiaTri"]);
            }
        }
        #endregion

        #region "Hàm dùng chung"
        void reloadControl()
        {
            idSelected = -1;
            txtName.Focus();
            txtName.Text = "";
            inputPrice.Value = 0;
            btnDelete.Enabled = false;
        }
        #endregion

    }
}
